Electronic systems and circuits have made a significant contribution towards the advancement of modern society and are utilized in a number of applications to achieve advantageous results. Numerous electronic technologies such as digital computers, calculators, audio devices, video equipment, and telephone systems have facilitated increased productivity and reduced costs in analyzing and communicating data, ideas and trends in most areas of business, science, education and entertainment. Frequently, these advantageous results are realized through the use of information stored on a memory media and manipulated by a processing device. The accuracy of the information stored in the memory often has a significant impact on the usefulness of the results. Providing greater accuracy typically requires memory components capable of supporting error correction activities. Traditional approaches to error correction usually require components to include additional dedicated connections or pins for error correcting information. These additional connection pins consume resources and increase the difficulty of manufacturing a memory component or chipset.
The information stored in a memory usually includes software programs comprising a series of instructions for manipulating data in the performance of useful tasks associated with a particular application. Generally, a certain level of accuracy in the information is required for the application to perform properly. The information is usually represented by bits comprising logical values (e.g., a string of ones and zeroes) stored in a memory. However, there is a possibility that the bit values are altered when the information is stored in memory. It is relatively common for at least some logical one values to be erroneous stored as a logical zero or vise versa. The impact that these erroneous inversions have typically depends upon the application which the information is utilized with.
Some applications do not require significant memory accuracy. For example, erroneous bits do not generally have a significant impact on graphics applications. Most graphics systems are directed to providing a visual display on a monitor. The visual display typically includes a very large number of pixels and a slight variation in a few of the pixels due to erroneous bits is not typically detected by the naked eye. Thus, the possibility that some of the pixel information may get distorted in memory does not have a perceptible impact on the final performance of the system.
Other applications however, often require a relatively high degree of information and memory reliability. If the data is sensitive, valuable, or utilized in a critical activity, a high degree of memory reliability is usually required. For example, applications that can impact public safety (e.g., applications used to design bridges, cars, planes, etc.) or are related to financial activities (e.g. banking, stock trading, etc.) usually require a high level of reliability. It is desirable to ensure that there is no erroneous changes in the information associated with these applications. Thus, the ability to detect erroneous information is very important in some applications.
Providing features that improve information reliability usually results in more resources being consumed when a memory component and/or chipset is manufactured. Providing connection pins dedicated for data communication and separate pins dedicated to communicating error correction information associated with the data increases the complexity of manufacturing operations. More complicated error correction schemes usually require a large number of dedicated pins to accommodate communication of the information. Although it is important to provide error correction capabilities, providing dedicated input and output (IO) pins for error correction code (ECC) operations takes up precious connections and expends valuable placement resources. Thus, a designer often has to expend significant chip resources for error correction operations or leave out the advantageous features.
Deciding whether to invest the additional resources for an error capable system or to opt for a normal memory system is usually very hard. It is difficult to predict the applications that will be utilized on a particular system with a great degree of certainty. Thus, for systems that typically do not engage in activities involving sensitive information, expensive connections dedicated for error correction operations are rarely utilized. However, if a user opts for a traditional memory that does not have dedicated error correction capabilities then they run the risk of unreliable memory storage when they do engage in sensitive activities. The dilemma of whether to provide an error correcting memory or a more economical memory increases fabrication problems for manufacturers also. As a practical matter, manufactures usually expend resources designing and manufacturing both types of memories and/or chipsets to respond to the respective conflicting market demands. Providing separate designs and manufacturing facilities is very expensive.
What is required is a flexible and efficient memory capable of addressing both pin resource consumption and error correction concerns.